//package com.digiwin.escloud.test.core.common;
//
//import com.digiwin.escloud.test.core.constant.CommonConstants;
//import com.digiwin.escloud.test.core.entity.ConfigEntity;
//import com.digiwin.escloud.test.core.entity.TestCaseEntity;
//import com.digiwin.escloud.test.core.parser.TestDataParser;
//import com.digiwin.escloud.test.core.parser.xml.XmlDataParser;
//import com.digiwin.escloud.test.core.util.JsonUtil;
//import io.restassured.RestAssured;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.io.IOUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.util.CollectionUtils;
//import org.testng.annotations.AfterSuite;
//import org.testng.annotations.BeforeSuite;
//import org.testng.annotations.DataProvider;
//import org.testng.collections.Lists;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.lang.reflect.Method;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Objects;
//import java.util.Properties;
//
///**
// * @Author yanggld
// * @Date 2020/5/11-16:12
// */
//@Slf4j
//public class CommonSuite {
//
//	public static ConfigEntity finalConfigEntity = null;
//	public static List<TestCaseEntity>  testCaseEntityList = null;
//	/**
//	 * 设置配置文件的名称（properties文件），默认叫做config.properties
//	 * @return
//	 */
//	protected String setConfigName(){
//		return CommonConstants.CONFIG_NAME;
//	}
//
//	/**
//	 * 设置测试用例文件的名称，默认叫做testCase.xml
//	 * @return
//	 */
//	protected List<String> initTestCaseName(){
//		String casePath = finalConfigEntity.getCasePath();
//		if (StringUtils.isBlank(casePath)) {
//			return Lists.newArrayList();
//		}
//		String[] casePathArray = StringUtils.splitByWholeSeparator(casePath, ",");
//		return Lists.newArrayList(casePathArray);
//	}
//	/**
//	 * 设置测试用例的解析器,默认为XmlDataParser
//	 * @return
//	 */
//	protected TestDataParser setTestDataParser(){
//		return new XmlDataParser();
//	}
//	/**
//	 * 初始化测试用例的数据
//	 * @return
//	 */
//	protected List<TestCaseEntity> initTestCaseEntity() throws IOException {
//		List<TestCaseEntity> resultList = new ArrayList<>();
//		List<String> casePathList = initTestCaseName();
//		for (String casePath : casePathList) {
//			InputStream dataInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(casePath);
//			if (Objects.nonNull(dataInputStream )) {
//				String	testData = IOUtils.toString(dataInputStream, "UTF-8");
//				resultList.addAll(setTestDataParser().parse(testData));
//			}
//		}
//		testCaseEntityList = resultList;
//		log.info("test case size is ：{}",testCaseEntityList.size());
//		return resultList;
//	}
//
//	/**
//	 * 初始化配置文件的数据
//	 * @return
//	 * @throws IOException
//	 */
//	protected ConfigEntity initConfigEntity() throws IOException {
//		Properties properties = new Properties();
//		InputStream configInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(setConfigName());
//		properties.load(configInputStream);
//		log.info("ftpConfig info is {} for test.", JsonUtil.gson.toJson(properties));
//		ConfigEntity configEntity  = new ConfigEntity();
//		String basePath = properties.getProperty(CommonConstants.BASE_PATH);
//		configEntity.setBasePath(basePath);
//		String baseUri = properties.getProperty(CommonConstants.BASE_URI);
//		if (StringUtils.isBlank(baseUri)) {
//			log.warn("baseUri is empty");
//		} else {
//			configEntity.setBaseURI(baseUri);
//		}
//		String portStr = properties.getProperty(CommonConstants.PORT);
//		if (StringUtils.isBlank(portStr)) {
//			log.warn("port is empty");
//		} else {
//			try {
//				configEntity.setPort(Integer.parseInt(portStr));
//			} catch (Exception e) {
//				e.printStackTrace();
//				log.warn("port is error.");
//			}
//		}
//		try {
//			String timeoutStr = properties.getProperty(CommonConstants.TIMEOUT);
//			if (StringUtils.isNotBlank(timeoutStr)) {
//				configEntity.setTimeout(Long.parseLong(timeoutStr));
//			}
//		} catch (Exception e){
//			e.printStackTrace();
//			log.warn("timeout is error.");
//		}
//		configEntity.setCasePath(properties.getProperty(CommonConstants.CASE_PATH));
//		finalConfigEntity = configEntity;
//		log.info("api url is {} for test.",(finalConfigEntity.getBaseURI()+":"+finalConfigEntity.getPort()));
//		return configEntity;
//	}
//
//	@BeforeSuite(description = "默认的测试套件前置处理方法")
//	public void beforeSuite() throws IOException {
//		initConfigEntity();
//		initTestCaseEntity();
//		try {
//			RestAssured.baseURI = finalConfigEntity.getBaseURI();
//			RestAssured.basePath = finalConfigEntity.getBasePath();
//			RestAssured.port = finalConfigEntity.getPort();
//		} catch (Exception e) {
//			log.error("config is error.");
//		}
//		log.info("default beforeSuite completed");
//	}
//
//	@AfterSuite(description = "默认的测试套件后置处理方法")
//	public void afterSuite() throws IOException {
//		log.info("default afterSuite completed");
//	}
//
//	@DataProvider(name = "dataProvider")
//	protected Object[][] dataProvider(Method method) {
//		List<Object[]> objectList = new ArrayList<>();
//		try {
//			List<TestCaseEntity> testCaseEntities = testCaseEntityList;
//			for (int i = 0; i < testCaseEntities.size(); i++) {
//				TestCaseEntity testCaseEntity = testCaseEntities.get(i);
//				String name = testCaseEntity.getName();
//				if (method.getName().equals(name)) {
//					Object[] obj = {testCaseEntity};
//					objectList.add(obj);
//				}
//			}
//			if (!CollectionUtils.isEmpty(objectList)) {
//				Object[][] objs = new Object[objectList.size()][];
//				for (int i = 0; i < objectList.size(); i++) {
//					objs[i] = objectList.get(i);
//				}
//				return objs;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return new Object[][]{};
//	}
//
//}
